The present invention relates to the field of computer graphics, and in particular to methods and apparatus for animating computer generated characters. The present invention relates to the field of computer graphics. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene. Animated sequences can be created by rendering a sequence of images of a scene as the scene is gradually changed over time. A great deal of effort has been devoted to making realistic looking rendered images and animations.
In computer-generated animation, a character's appearance is defined by a three-dimensional computer model. To appear realistic, the computer model of a character is often extremely complex, having millions of surface elements and hundreds or thousands of attributes. Due to the complexity involved with animating such complex models, animation tools often rely on armatures and animation variables to define character animation. An armature is a “stick figure” representing the character's pose, or bodily attitude. The armature is controlled by animation variables, which are parameters used by a function to modify the character model. By changing the value of animation variables, the armature can be manipulated into a desired pose. As the armature is posed by the animator, the animation tools modify character model so that the bodily attitude of the character roughly mirrors that of the armature.
Animation variables and their associated functions are used to abstract complicated modifications to a character model to a relatively simple control. One type of animation variable specifies the rotation angles of the joints in the armature of a character model. Armature joints may have one or more axes of rotation, depending upon the type of armature joint. For example, a ball and socket joint, as found in the shoulder and hip joints of armatures for humanoid characters, will have three axes of rotation.
Because of problems related to joint gimbal lock, which is when one axis of rotation is rotated to the same direction as a second axis of rotation, a prior approach over-specifies three-dimensional rotations with four rotation angles rather than the minimum of three angles. For example a three-dimensional rotation may be represented by consecutive rotations around the x, z, and y axes, and then a fourth rotation around the x axis. This four angle representation of a three-dimensional rotation is referred to as a set of extended Euler angles. In another example, a three-dimensional rotation can be represented using three rotation angles and a fourth “hint” angle that specifies the intended final position of the joint after rotation. In general, a set of angles that includes one or more redundant angles is referred to as a set of extended angles.
The use of the redundant rotation angles, such as the additional x-axis rotation or a hint angle in the examples above, insures that it is always possible to make a desired rotation from one joint orientation to another joint orientation without large changes in one of the rotation angles. The use of an extra rotation angles enable any three-dimensional rotation, and hence any character pose, to be specified with many different sets of extended angle values.
The ambiguity created from representing the same poses with different sets of angle values does not present a problem for rigidly rotating objects. However, character models are often not rigidly rotating objects. In articulated characters, the points of the character model, such as skin or control points defining the surface of the character model, are often weighted by the rotation angles of nearby armature joints. Applying weights to joint rotations smoothly distributes the rotation over the points of the character model. Because of the ambiguity inherent in a angle rotations, the position of points on a character model depends not only on the final position of the joint but also on the particular set of extended angles selected by the animator to create the pose.
Thus, some of the set of extended angles defining a given pose will result in a visually displeasing or awkward appearance. Moreover, as the character model is animated using some animation techniques, discontinuous “popping,” or abrupt changes in the appearance of the character model, will occur. For example, when inverse kinematic (IK) solvers are used to determine all or a portion of a character's pose, discontinuous popping will occur as the solvers switch between pose solutions defined by drastically different sets of extended angles.
It is therefore desirable for a system and method of expressing joint angles to avoid gimbal lock and to give character models a consistent appearance regardless of the set of joint angles used to define a given pose. Furthermore, it is desirable to be able to animate the character model without introducing visual discontinuities. It is also desirable that the system and method of expressing joint angles allows for the use of inverse kinematics and other algorithms to determine the pose and appearance of the articulated model.